


class IlkelHesap {

	private double miktar = 50; 

	public  double paraYatir(double m) {
		this.miktar += m ; 
		return miktar;
	}

	public  void paraCek(double m) {
		if (this.miktar < 0) {
			System.out.println("Bakiye yetersiz " + this.miktar);
			return;	// metodu terk et
		}
		this.miktar -= m ; 
	}

	public double miktariOgren() {
		return miktar;
	}
}



class IlkelBankaCalisaniBir extends Thread {

	IlkelHesap ih ; 

	public IlkelBankaCalisaniBir( String isim, IlkelHesap ih) {
		super(isim);
		this.ih = ih ;
	}

	public void run() {

		try {



			double miktar = ih.miktariOgren();
			double ilkMiktar = miktar;
			ih.paraYatir(100);
			sleep(1);
			ih.paraYatir(100);
			sleep(1);
			ih.paraCek(150);
			miktar = ih.miktariOgren();
			// islem sonunda elde etmesi gereken
			System.out.println(currentThread().getName()+"-->"
							   +ilkMiktar+" + 100 + 100 - 150 =" + miktar );



		} catch (InterruptedException iEx) {
		}
	}
}

class IlkelBankaCalisaniIki extends Thread {

	IlkelHesap ih ; 

	public IlkelBankaCalisaniIki( String isim, IlkelHesap ih) {
		super(isim);
		this.ih = ih ;

	}

	public void run() {

		try {


			double miktar = ih.miktariOgren();
			double ilkMiktar = miktar;
			ih.paraYatir(200);
			sleep(1);
			ih.paraCek(50);
			sleep(2);
			ih.paraYatir(100);
			miktar = ih.miktariOgren();
			// islem sonunda elde etmesi gereken
			System.out.println(currentThread().getName()+"-->"
							   +ilkMiktar+" + 200 - 50 + 100 =" + miktar );


		} catch (InterruptedException iEx) {
		}
	}
}

public class IlkelBanka extends Thread {

	public static void main(String args[]) throws Exception {

		IlkelHesap ih = new IlkelHesap();
		
		IlkelBankaCalisaniBir ibc1 = 
		      new IlkelBankaCalisaniBir("IlkelBankaCalisaniBir", ih);
		
		IlkelBankaCalisaniIki ibc2 = 
		      new IlkelBankaCalisaniIki("IlkelBankaCalisaniIki", ih);

		ibc1.start();
		ibc2.start();


	}
}

